// 在函子中，如果抛出了一个错误，这个实收怎么办呢
class Maybe {
  static of(value) {
    return new Maybe(value);
  }

  constructor(value) {
    this._value = value;
  }

  map(fn) {
    return this.noting() ? Maybe.of(fn(this._value)) : Maybe.of(this._value);
  }

  // 可以设置一个容错的方法
  noting() {
    return this._value || this._value === 0;
  }
}

// 尝试一下
const r = Maybe.of(0)
            .map(x => x + 1);
console.log(r, 'r');
